// 此文件,用于自定义本项目的插件,封装一些方法丶组件丶一些功能等...都可以

import store from './../store/index'
import { getToken } from './../utils/token'
import { Toast } from 'vant'
import router from './../router/index'

// 插件中要使用到这个组件
import hmnavbar from '@/components/hmnavbar'
// 使用dayjs第三方时间处理包
import 'dayjs/locale/zh-cn' // ES 2015
// dayjs插件包的导入
import dayjs from 'dayjs'
// 导入相对时间的插件
import relativeTime from 'dayjs/plugin/relativeTime'
dayjs.extend(relativeTime)
//  导入语言包
dayjs.locale('zh-cn') // 全局使用

// 声明一个插件对象
var pluginObj = {}

// 自定义插件的时候,必须要给这个插件对象添加一个install方法
pluginObj.install = function (Vue) {
  // 插件中所要用到的功能代码
  // 1. 想要给插件中添加一个全局的hmnavbar组件
  Vue.component('hmnavbar', hmnavbar)
  // 2. 在插件中添加全局过滤器
  Vue.filter('relativeTime', function (val) {
    return dayjs().to(dayjs(val))
  })
  // 3. 封装个全局方法,用于进行登陆验证
  Vue.prototype.$login = function () {
    // 1.如果没有用户数据
    if (!store.state.isLogin) {
      // 2.判断token的存在
      const token = getToken('token')
      if (token) {
        // 有token,则直接获取用户的数据
        store.dispatch('setUserinfo')
        // 将用户的数据状态改为true
        store.commit('setIslogin', true)
        return true
      } else {
        // 提示用户未登录
        Toast.fail('请先登录')
        // 跳转到登录页,并且携带这个页面的路径作为参数进行跳转
        router.push('/login?_redirect=' + window.location.href.split('#')[1])
        return false
      }
    } else {
      return true
    }
  }
}

export default pluginObj
